package leetCodeEveryday.Test2399检查相同字母间的距离;

import java.util.Arrays;

public class Solution {
    public boolean checkDistances(String s, int[] distance) {
        int[] trueDistance = new int[26];
        Arrays.fill(trueDistance, -1);
        char[] chars = s.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            char c = chars[i];
            int index = c - 'a';
            if (trueDistance[index] == -1) {
                //第一次遍历到,记录一下第一次出现的位置
                trueDistance[index] = i;
            } else {
                //第二次遍历到,拿此时的位置减去第一次出现的位置即可
                //注意这里计算的是两个位置之间的字母数量,两端不计入
                trueDistance[index] = i - trueDistance[index] - 1;
            }
        }

        for (int i = 0; i < distance.length; i++) {
            // trueDistance[i] != -1代表字符串中有这个字符
            if (trueDistance[i] != -1 && distance[i] != trueDistance[i]) {
                return false;
            }
        }
        return true;
    }
}
